﻿using System;
using System.Windows.Controls.Primitives;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Data;
using produccion.clases;
using System.ComponentModel;
using System.IO;
using System.Diagnostics;
using produccion.vistamodelo;
using produccion.reportes;
using System.Threading;
using System.Globalization;

namespace produccion.forms
{
    /// <summary>
    /// Lógica de interacción para FrmResumenDeVentasPorMes.xaml
    /// </summary>
    public partial class FrmResumenDeVentasPorMes : Window
    {
        #region FJRF - VARIABLES GENERIAS DE TODO EL FORMULARIO
        MDOgeneral MdoGeneral = new MDOgeneral();//FJRF - Traemos toda la informacion y funciones de MdoGeneral

        DataTable DtConsulta;//FJRF - Usamos este DataTable para hacer consultas generales
        DataSet DsConsulta;//FJRF - Usamos este DataTable para hacer consultas generales
        String StrConsulta;//FJRF - Usamos este DataTable para hacer consultas generales

        DataTable DtEncabezadoYParametros;//FJRF - Usamos este DataTable para hacer consultas generales del os encabezados mas los parametros
        DataSet DsImprimir;//FJRF - Usamos este dataset para la impresion de consultas

        DataTable DtConsultaResumenPorReferencia;//FJRF - Usamos este DataTable para hacer consultas 
        DataTable DtConsultaResumenPorReferenciaEnDosLineas;//FJRF - Usamos este DataTable para hacer consultas 
        DataTable DtConsultaResumenPorMes;//FJRF - Usamos este DataTable para hacer consultas 

        DataTable DtConsultaResumenPorLinea;//FJRF - Usamos este DataTable para hacer consultas 
        DataTable DtConsultaResumenPorLineaImprimir;//FJRF - Usamos este DataTable para hacer consultas 

        String StrCodigoPrimerColorReferencia;//FJRF - Esta variable se usa para guardar el primer color que tenga la imagen por si hay mas colores y no tiene imagen poner esta

        DataTable DtConsultaResumenPorMesArmado;//FJRF - Usamos este DataTable para hacer consultas 
        DataTable DtConsultaResumenPorMesArmadoImprimir;//FJRF - Usamos este DataTable para hacer consultas impresas
        DataTable DtConsultaResumenPorReferenciaEnDosLineasImprimir;//FJRF - Usamos este DataTable para hacer consultas impresas
        
        DataTable DtConsultaResumenPorLineaArmado;//FJRF - Usamos este DataTable para hacer consultas
        DataTable DtConsultaResumenPorReferenciaEnDosLineasArmado;//FJRF - Usamos este DataTable para hacer consultas 
        DataRow DrNuevasFilas;//FJRF - Para el manejo de filas

        

        string StrMensajeBox = "";//FJRF - Para los mensajes de las cajas de texto
        string StrCaptionBox = "";//FJRF - Para los mensajes de los caption de las cajas de texto

        String StrRutaReporteCrystalReport = @"reportes\";//FJRF - Esta es la ruta de los reportes de crystal reports
        String StrVerSoloClientesComerciales;//FJRF - Variable que contendra si se van a visualizar o no los clientes comerciales
        String StrAñoSeleccionado, StrClienteSeleccionado, StrSubClienteSeleccionado;//FJRF - Variable que contendra el año seleccionado
        String StrClienteInicial = "", StrClienteFinal = "", StrSubClienteInicial = "", StrSubClienteFinal = "";//FJRF - variable que contiene los parametros de los combos para clientes y subclientes
        #endregion

        public FrmResumenDeVentasPorMes()
        {
            InitializeComponent();
        }

        #region FJRF - OBJETOS DEL FORMULARIO
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            //FJRF - CON ESTO GARANTIZAMOS QUE LAS FECHAS SIEMPRE VENDRAN EN ESTE FORMATO DE DIA/MES/AÑO
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");//FJRF - Con esto aseguramos que la base de datos reciba los numeros como se deben recibir
            Thread.CurrentThread.CurrentCulture = (CultureInfo)Thread.CurrentThread.CurrentCulture.Clone();
            Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";

            string strTituloVentana = "RESUMEN DE VENTAS POR MES" + " - Usuario:" + MDOgeneral.usuario + "- [FrmResumenDeVentasPorMes]";//FJRF - Armamos el titulo de la ventana
            Title = strTituloVentana;//FJRF - Ponemos el titulo de la ventana

            CboVerSoloClientesComerciales.SelectedIndex = 0;//FJRF - Decimos que si queremos ver todos los clientes comerciales

            #region FJRF - CreamosLosAños
            int IntDesde = 1993, IntHasta, IntIndex = -1;//FJRF - Creamos las variables que tendran el rango de años a manejar
            DateTime DttFecha = DateTime.Now;//FJRF - Creamos una variable que tendra la fecha del sistema

            IntHasta = DttFecha.Year;//FJRF - Extraemos el año actual del sistema como fin del parametro de años
            while (IntDesde <= IntHasta)//FJRF - 
            {
                IntIndex++;//FJRF - Contamos la cantidad de años creados
                CboAño.Items.Add(IntDesde);//FJRF - Agregamos el año al objeto
                IntDesde++;//FJRF - Aumentamos la posicion inicial
            }
            CboAño.SelectedIndex = IntIndex;//FJRF - Seleccionamos el año actual
            #endregion

            PttV_CargarClientesComerciales();//FJRF - Cargamos los clientes comerciales dependiendo del año
            
            CboAño.Focus();//FJRF - Ponemos el foco al objeto
        }
        private void BtnExportarResumenPorReferencia_Click(object sender, RoutedEventArgs e)
        {
            PttV_ImprimirResumenPorReferenciaExcel();
        }
        private void CboAño_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            PttV_LimpiarCombos();//FJRF - Limpiamos todos los combos
            PttV_CargarClientesComerciales();//FJRF - Cargamos los clientes comerciales dependiendo del año
        }
        private void CboCodigoCliente_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            CboNombreCliente.SelectedIndex = CboCodigoCliente.SelectedIndex;//FJRF - Igualamos la posicion del codigo seleccionado con la posicion donde esta el nombre
            PttV_CargarSubClientes();//FJRF - Cargamos los subclientes dependiendo del cliente seleccionado
        }
        private void CboNombreCliente_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            CboCodigoCliente.SelectedIndex = CboNombreCliente.SelectedIndex;//FJRF - Igualamos la posicion del nombre seleccionado don la posicion donde esta el codigo
            PttV_CargarSubClientes();//FJRF - Cargamos los subclientes dependiendo del cliente seleccionado
        }
        private void CboCodigoSubCliente_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            CboNombreSubCliente.SelectedIndex = CboCodigoSubCliente.SelectedIndex;//FJRF - Igualamos la posicion del codigo seleccionado con la posicion donde esta el nombre
        }
        private void CboNombreSubCliente_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            CboCodigoSubCliente.SelectedIndex = CboNombreSubCliente.SelectedIndex;//FJRF - Igualamos la posicion del nombre seleccionado don la posicion donde esta el codigo
        }
        private void CboVerSoloClientesComerciales_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (CboVerSoloClientesComerciales.SelectedItem != null)//FJRF - Validamos que el campo no llegue nullo
            {
                String StrDato = CboVerSoloClientesComerciales.SelectedItem.ToString().Replace("System.Windows.Controls.ComboBoxItem: ", "");
                StrVerSoloClientesComerciales = StrDato.Substring(0, 1);//FJRF - Extraemos el parametro que necesitamos para ver solo los cliente comerciales
            }
        }
        private void CkbMostrarUnidades_Click(object sender, RoutedEventArgs e)
        {
            PttV_MostrarUnidades();//FJRF - Se cambia el tipo de visualizacion del grid para mostrar solo las unidades
        }
        private void CkbMostrarDinero_Click(object sender, RoutedEventArgs e)
        {
            PttV_MostrarDinero();//FJRF - Se cambia el tipo de visualizacion del grid para mostrar solo el dinero
        }
        private void CkbDiscriminarPorMesResumenPorLinea_Click(object sender, RoutedEventArgs e)
        {
            PttV_Procesar();//FJRF - Generamos la informacion que llena los grid
        }
        private void BtnImprimirResumenPorReferencia_Click(object sender, RoutedEventArgs e)
        {
            PttV_ImprimirResumenPorReferencia();//FJRF - Generamos la impresion en CrystalReport
        }
        private void BtnImprimirResumenPorMes_Click(object sender, RoutedEventArgs e)
        {
            PttV_ImprimirResumenPorMes();//FJRF - Generamos la impresion en CrystalReport
        }
        private void BtnImprimirResumenPorLinea_Click(object sender, RoutedEventArgs e)
        {
            PttV_ImprimirResumenPorLinea();//FJRF - Generamos la impresion en CrystalReport
        }
        private void BtnProcesar_Click(object sender, RoutedEventArgs e)
        {
            PttV_Procesar();//FJRF - Generamos la informacion que llena los grid
        }
        private void btnSalir_Click(object sender, RoutedEventArgs e)
        {
            PttV_Salir();//FJRF - Nos salimos del sistema
        }
        private void DtgResumenPorReferencia_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            //Style MyStyleTransparent = new Style(typeof(DataGridCell));//FJRF - Creamos un nuevo estilo para la celda
            //MyStyleTransparent.Setters.Add(new Setter(BackgroundProperty, Brushes.Transparent));//FJRF - Decimos que el texto se ponga transparente para que tome las propiedades del grid

            //(e.Column as DataGridTextColumn).CellStyle = MyStyleTransparent;//FJRF - Asignamos el estilo creado

            string strNombreColumna = "";//FJRF - Variable para saber el nombre de la columna
            strNombreColumna = e.Column.Header.ToString();//FJRF - Extraemos el nombre de la columna

            if (strNombreColumna == "UNIENE" || strNombreColumna == "UNIFEB" || strNombreColumna == "UNIMAR" || strNombreColumna == "UNIABR" || strNombreColumna == "UNIMAY" || strNombreColumna == "UNIJUN" || strNombreColumna == "UNIJUL" || strNombreColumna == "UNIAGO" || strNombreColumna == "UNISEP" || strNombreColumna == "UNIOCT" || strNombreColumna == "UNINOV" || strNombreColumna == "UNIDIC" || strNombreColumna == "UNITOT" || strNombreColumna == "DINENE" || strNombreColumna == "DINFEB" || strNombreColumna == "DINMAR" || strNombreColumna == "DINABR" || strNombreColumna == "DINMAY" || strNombreColumna == "DINJUN" || strNombreColumna == "DINJUL" || strNombreColumna == "DINAGO" || strNombreColumna == "DINSEP" || strNombreColumna == "DINOCT" || strNombreColumna == "DINNOV" || strNombreColumna == "DINDIC" || strNombreColumna == "DINTOT" || strNombreColumna == "ENERO" || strNombreColumna == "FEBRERO" || strNombreColumna == "MARZO" || strNombreColumna == "ABRIL" || strNombreColumna == "MAYO" || strNombreColumna == "JUNIO" || strNombreColumna == "JULIO" || strNombreColumna == "AGOSTO" || strNombreColumna == "SEPTIEMBRE" || strNombreColumna == "OCTUBRE" || strNombreColumna == "NOVIEMBRE" || strNombreColumna == "DICIEMBRE" || strNombreColumna == "TOTAL")
            {
                Style MyStyleTextAlignmentProperty = new Style(typeof(DataGridCell));//FJRF - Creamos un nuevo estilo para la celda
                MyStyleTextAlignmentProperty.Setters.Add(new Setter(TextBlock.TextAlignmentProperty, TextAlignment.Right));//FJRF - Alineamos los datos de la celda a la derecha

                (e.Column as DataGridTextColumn).Binding.StringFormat = "{0:##,#0.##}";//FJRF - Enviamos el formato a la celda
                (e.Column as DataGridTextColumn).CellStyle = MyStyleTextAlignmentProperty;//FJRF - Alineamos la celda a la derecha
            }
            e.Column.IsReadOnly = true;//FJRF - Inavilita las columnas para que no se pueda escribir sobre ella
        }
        private void DtgResumenPorMes_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            //Style MyStyleTransparent = new Style(typeof(DataGridCell));//FJRF - Creamos un nuevo estilo para la celda
            //MyStyleTransparent.Setters.Add(new Setter(BackgroundProperty, Brushes.Transparent));//FJRF - Decimos que el texto se ponga transparente para que tome las propiedades del grid

            //(e.Column as DataGridTextColumn).CellStyle = MyStyleTransparent;//FJRF - Asignamos el estilo creado

            string strNombreColumna = "";//FJRF - Variable para saber el nombre de la columna
            strNombreColumna = e.Column.Header.ToString();//FJRF - Extraemos el nombre de la columna

            if (strNombreColumna == "CANTIDAD" || strNombreColumna == "VALOR" || strNombreColumna == "PROMEDIO")
            {
                Style MyStyleTextAlignmentProperty = new Style(typeof(DataGridCell));//FJRF - Creamos un nuevo estilo para la celda
                MyStyleTextAlignmentProperty.Setters.Add(new Setter(TextBlock.TextAlignmentProperty, TextAlignment.Right));//FJRF - Alineamos los datos de la celda a la derecha

                (e.Column as DataGridTextColumn).Binding.StringFormat = "{0:##,#0.##}";//FJRF - Enviamos el formato a la celda
                (e.Column as DataGridTextColumn).CellStyle = MyStyleTextAlignmentProperty;//FJRF - Alineamos la celda a la derecha
            }
            e.Column.IsReadOnly = true;//FJRF - Inavilita las columnas para que no se pueda escribir sobre ella
        }
        private void DtgResumenPorLinea_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            //Style MyStyleTransparent = new Style(typeof(DataGridCell));//FJRF - Creamos un nuevo estilo para la celda
            //MyStyleTransparent.Setters.Add(new Setter(BackgroundProperty, Brushes.Transparent));//FJRF - Decimos que el texto se ponga transparente para que tome las propiedades del grid

            //(e.Column as DataGridTextColumn).CellStyle = MyStyleTransparent;//FJRF - Asignamos el estilo creado

            string strNombreColumna = "";//FJRF - Variable para saber el nombre de la columna
            strNombreColumna = e.Column.Header.ToString();//FJRF - Extraemos el nombre de la columna

            if (strNombreColumna == "CANTIDAD" || strNombreColumna == "VALOR" || strNombreColumna == "PROMEDIO")
            {
                Style MyStyleTextAlignmentProperty = new Style(typeof(DataGridCell));//FJRF - Creamos un nuevo estilo para la celda
                MyStyleTextAlignmentProperty.Setters.Add(new Setter(TextBlock.TextAlignmentProperty, TextAlignment.Right));//FJRF - Alineamos los datos de la celda a la derecha

                (e.Column as DataGridTextColumn).Binding.StringFormat = "{0:##,#0.##}";//FJRF - Enviamos el formato a la celda
                (e.Column as DataGridTextColumn).CellStyle = MyStyleTextAlignmentProperty;//FJRF - Alineamos la celda a la derecha
            }
            e.Column.IsReadOnly = true;//FJRF - Inavilita las columnas para que no se pueda escribir sobre ella
        }
        private void DtgResumenPorReferencia_LoadingRow(object sender, DataGridRowEventArgs e)
        {
            String StrDato = "";//FJRF - Para saber que dato trae la fila
            try
            {
                if (CkbMostrarUnidades.IsChecked == true && CkbMostrarDinero.IsChecked == true)//FJRF - [Valos por defecto] si viene sin seleccionar nada hacemos lo siguiente (Este es el grid como lo pidio Mauricio)
                {
                    StrDato = ((System.Data.DataRowView)(e.Row.DataContext)).Row.ItemArray[20].ToString();
                    if (StrDato == "1")
                    {
                        e.Row.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#E5C9EBFA"));
                    }
                    else
                    {
                        e.Row.Background = new SolidColorBrush(Colors.WhiteSmoke);
                    }
                }
            }
            catch
            {
            }
        }
        private void DtgResumenPorReferencia_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            String StrReferencia = "", StrColor = "", StrNombre = "";//FJRF - Variables que se necesitan para enviarlos como parametros para buscar la imagen de la referencia

            DataRowView DrwDatosDelGrid = DtgResumenPorReferencia.SelectedItem as DataRowView;//FJRF - Cargamos un DataRowView con el dato seleccionado
            DataRow DrFilaDelGrid = DrwDatosDelGrid.Row;//FJRF - Asignamos las finas

            StrNombre = Convert.ToString(DrFilaDelGrid.ItemArray[1] + " - " + DrFilaDelGrid.ItemArray[3] + " - " + DrFilaDelGrid.ItemArray[5]);//FJRF - Traemos el dato en la columna dada de la fila seleccionada
            StrReferencia = Convert.ToString(DrFilaDelGrid.ItemArray[2]);//FJRF - Traemos el dato en la columna dada de la fila seleccionada
            StrColor = Convert.ToString(DrFilaDelGrid.ItemArray[4]);//FJRF - Traemos el dato en la columna dada de la fila seleccionada

            PonerImagen(StrReferencia, StrColor, StrNombre);//FJRF - Buscamos la imagen
            txtReferencia.Text = StrReferencia;
        }
        private void DtgResumenPorReferencia_KeyUp(object sender, KeyEventArgs e)
        {
            String StrReferencia = "", StrColor = "", StrNombre = "";//FJRF - Variables que se necesitan para enviarlos como parametros para buscar la imagen de la referencia

            DataRowView DrwDatosDelGrid = DtgResumenPorReferencia.SelectedItem as DataRowView;//FJRF - Cargamos un DataRowView con el dato seleccionado
            DataRow DrFilaDelGrid = DrwDatosDelGrid.Row;//FJRF - Asignamos las finas

            StrNombre = Convert.ToString(DrFilaDelGrid.ItemArray[1] + " - " + DrFilaDelGrid.ItemArray[3] + " - " + DrFilaDelGrid.ItemArray[5]);//FJRF - Traemos el dato en la columna dada de la fila seleccionada
            StrReferencia = Convert.ToString(DrFilaDelGrid.ItemArray[2]);//FJRF - Traemos el dato en la columna dada de la fila seleccionada
            StrColor = Convert.ToString(DrFilaDelGrid.ItemArray[4]);//FJRF - Traemos el dato en la columna dada de la fila seleccionada

            PonerImagen(StrReferencia, StrColor, StrNombre);//FJRF - Buscamos la imagen
            txtReferencia.Text = StrReferencia;
        }

        #endregion

        #region FJRF - PROCEDIMIENTOS Y FUNCIONES PROPIAS DEL FORMULARIO
        private void CargarParametrosImpresion()
        {
            #region FJRF - CreamosLasColmnasDelEncabezado
            DtEncabezadoYParametros = new DataTable("DtEncabezadoYParametros");//FJRF - Creamos la tabla que contendra el encabezado del informe

            //FJRF - CREAMOS LAS COLUMNAS DE LOS PARAMETROS A ENVIAR
            DtEncabezadoYParametros.Columns.Add("NombreEmpresa", System.Type.GetType("System.String"));//FJRF - Este es el nombre de la empresa
            DtEncabezadoYParametros.Columns.Add("TituloReporte", System.Type.GetType("System.String"));//FJRF - El titulo que tendra el reporte
            DtEncabezadoYParametros.Columns.Add("CodigoCliente", System.Type.GetType("System.String"));//FJRF - Parametro que envia el sistema para la generacion del reporte
            DtEncabezadoYParametros.Columns.Add("NombreCliente", System.Type.GetType("System.String"));//FJRF - Parametro que envia el sistema para la generacion del reporte
            DtEncabezadoYParametros.Columns.Add("CodigoSubCliente", System.Type.GetType("System.String"));//FJRF - Parametro que envia el sistema para la generacion del reporte
            DtEncabezadoYParametros.Columns.Add("NombreSubCliente", System.Type.GetType("System.String"));//FJRF - Parametro que envia el sistema para la generacion del reporte
            DtEncabezadoYParametros.Columns.Add("ClientesComerciales", System.Type.GetType("System.String"));//FJRF - Parametro que envia el sistema para la generacion del reporte
            #endregion

            #region FJRF - AsignamosEnLasColmnasDelEncabezadoLosValores

            DataRow drEncabezadoYParametros;//FJRF - Creamos un manejador de filas para el DataTable actual

            drEncabezadoYParametros = DtEncabezadoYParametros.NewRow();//FJRF - Agregamos una nueva fila
            //FJRF - ASIGNAMOS LOS VALORES
            drEncabezadoYParametros["NombreEmpresa"] = MDOgeneral.strEmpresaImprime;//Enviamos el parametro que requerimos cargar este parametro varia segun la necesidad del formulario
            drEncabezadoYParametros["TituloReporte"] = LblTituloGridResumenPorMes.Content.ToString().Trim();//Enviamos el parametro que requerimos cargar este parametro varia segun la necesidad del formulario

            drEncabezadoYParametros["CodigoCliente"] = CboCodigoCliente.Text;//Enviamos el parametro que requerimos cargar este parametro varia segun la necesidad del formulario
            drEncabezadoYParametros["NombreCliente"] = CboNombreCliente.Text;//Enviamos el parametro que requerimos cargar este parametro varia segun la necesidad del formulario

            drEncabezadoYParametros["CodigoSubCliente"] = CboCodigoSubCliente.Text;//Enviamos el parametro que requerimos cargar este parametro varia segun la necesidad del formulario
            drEncabezadoYParametros["NombreSubCliente"] = CboNombreSubCliente.Text;//Enviamos el parametro que requerimos cargar este parametro varia segun la necesidad del formulario
            drEncabezadoYParametros["ClientesComerciales"] = CboVerSoloClientesComerciales.Text;//Enviamos el parametro que requerimos cargar este parametro varia segun la necesidad del formulario
            
            DtEncabezadoYParametros.Rows.Add(drEncabezadoYParametros);//FJRF - Agregamos a la tabla el registro creado
            DtEncabezadoYParametros.TableName = "DtEncabezadoYParametros";//FJRF - Le damos un nombre a la tabla creada para poder verla en el DataSet
            #endregion
        }
        protected void PttV_MostrarUnidades()
        {
            PttV_Procesar();//FJRF - Generamos la informacion que llena los grid
        }
        protected void PttV_MostrarDinero()
        {
            PttV_Procesar();//FJRF - Generamos la informacion que llena los grid
        }
        protected void PttV_ImprimirResumenPorReferencia()
        {
            try//FJRF - Validamos el proceso de impresion 
            {
                String StrRutaReporteAImprimir = StrRutaReporteCrystalReport + "rptResumenPorReferenciaEnDosLineas.rpt";//FJRF - Armamos la ruta completa donde estara el reporte
                if (System.IO.File.Exists(StrRutaReporteAImprimir) == true)//FJRf - Si el reporte existe hacemos lo siguiente
                {
                    #region FJRF - ImprimimosElReporte
                    if (DtConsultaResumenPorMesArmadoImprimir == null)//FJRF - Validamos que el reporte tenga datos para realizar el proceso de impresion
                    {
                        Msgbox("PROCESO CANCELADO", "No existen datos para imprimir el reporte", MessageBoxButton.OK, MessageBoxImage.Error); //FJRF - Informamos al usuario
                    }
                    else//FJRF - Si trae datos hacemos lo siguiente
                    {
                        CargarParametrosImpresion();//FJRF - Cargamos los parametros para la impresion, esto contiene titulo y parametros enviados al cystalreport

                        DsImprimir = new DataSet("dsConsultaResumenPorMesArmado");//FJRF - DataSet que esta vinculado al CrystalReport

                        //FJRF - ADICIONAMOS LAS TABLAS QUE NECESITE EL DATASET ASOCIADO AL CRYSTAL
                        DsImprimir.Tables.Add(DtEncabezadoYParametros.Copy());//Encabezado Informe
                        DsImprimir.Tables.Add(DtConsultaResumenPorReferenciaEnDosLineasImprimir.Copy());//Detalle del Informe

                        produccion.reportes.Vista vista = new produccion.reportes.Vista { ds = DsImprimir, reporte = StrRutaReporteAImprimir };//FJRF - Enviamos los datos para que se imprima el reporte
                        vista.Show();//FJRF - Ejecutamos el reporte para que se muestre visualmente
                    }
                    #endregion
                }
                else//FJRF - Si el reporte no existe hacemos lo siguiente
                {
                    Msgbox("PROCESO CANCELADO", "El reporte no existe en la ruta: [" + StrRutaReporteAImprimir + "] por favor comuniquese con el administrador del sistema para que corriga este inconveniente.", MessageBoxButton.OK, MessageBoxImage.Error);//FJRF - Enviamos un mensaje al usuario
                }
            }
            catch (Exception ex)//FJRF - Si se presenta algun error hacemos lo siguiente
            {
                Msgbox("PROCESO CANCELADO - [Error del sistema]", ex.Message.ToString(), MessageBoxButton.OK, MessageBoxImage.Error);//FJRF - Enviamos un mensaje al usuario
            }
        }
        protected void PttV_ImprimirResumenPorReferenciaExcel()
        {
            try//FJRF - Validamos el proceso de impresion 
            {
                if (DtConsultaResumenPorMesArmadoImprimir == null)//FJRF - Validamos que el reporte tenga datos para realizar el proceso de impresion
                {
                    Msgbox("PROCESO CANCELADO", "No existen datos para imprimir el reporte", MessageBoxButton.OK, MessageBoxImage.Error); //FJRF - Informamos al usuario
                }
                else//FJRF - Si trae datos hacemos lo siguiente
                {
                    FrmAyudasGenericas FrmAyudas = new FrmAyudasGenericas();//FJRF - Creamos una variable que maneje las propiedades del formulario que vamos a invocar
                    FrmAyudas.pStrTituloVentana_Opcional = LblTituloGridResumenPorReferencia.Content.ToString().Trim();//FJRF - Le enviamos un titulo personalizado al formulario

                    FrmAyudas.pDtDatosRecibidosConInformacion = DtConsultaResumenPorReferenciaEnDosLineasImprimir.Copy();//FJRF - Enviamos los datos sacando una copia de los datos

                    //FrmAyudas.pStrConsultaSql_Obligatorio = StrConsulta;//FJRF - Armamos la consulta
                    FrmAyudas.pStrCampoCodigoDeLaTabla_Obligatorio = "CODREF";//FJRF - Le decimos que este es el campo codigo o llave debe tener el nombre final osea el alias si es q lo tiene
                    FrmAyudas.pStrBuscarPorDefectoEnElCampo_Opcional = "REFERENCIA";//FJRF - Asignamos el dato a buscar
                    FrmAyudas.pBooQuitarBotonRetornar_Opcional = true;//FJRF - Quitamos el boton de retornar datos
                    FrmAyudas.pBooPonerBotonExportarExcel_Opcional = true;//FJRF - Activamos el boton para que se le permita la exportacion de datos a excel

                    String StrColumnasParaFormato = "ENERO, FEBRERO, MARZO, ABRIL, MAYO, JUNIO, JULIO, AGOSTO, SEPTIEMBRE, OCTUBRE, NOVIEMBRE, DICIEMBRE, TOTAL";//FJRF - Columnas para formato numerico
                    FrmAyudas.pStrNombreColumnasParaFormatoNumericoSeparadoPorComas_Opcional = StrColumnasParaFormato;//FJRF - Enviamos las columnas que se le van a hacer formato numerico

                    FrmAyudas.ShowDialog();//FJRF - Invocamos el formulario

                }
            }
            catch (Exception ex)//FJRF - Si se presenta algun error hacemos lo siguiente
            {
                Msgbox("PROCESO CANCELADO - [Error del sistema]", ex.Message.ToString(), MessageBoxButton.OK, MessageBoxImage.Error);//FJRF - Enviamos un mensaje al usuario
            }
        }
        protected void PttV_ImprimirResumenPorMes()
        {
            try//FJRF - Validamos el proceso de impresion
            {
                String StrRutaReporteAImprimir = StrRutaReporteCrystalReport + "rptResumenPorMesArmado.rpt";//FJRF - Armamos la ruta completa donde estara el reporte
                if (System.IO.File.Exists(StrRutaReporteAImprimir) == true)//FJRf - Si el reporte existe hacemos lo siguiente
                {
                    #region FJRF - ImprimimosElReporte
                    if (DtConsultaResumenPorMesArmadoImprimir == null)//FJRF - Validamos que el reporte tenga datos para realizar el proceso de impresion
                    {
                        Msgbox("PROCESO CANCELADO", "No existen datos para imprimir el reporte", MessageBoxButton.OK, MessageBoxImage.Error); //FJRF - Informamos al usuario
                    }
                    else//FJRF - Si trae datos hacemos lo siguiente
                    {
                        CargarParametrosImpresion();//FJRF - Cargamos los parametros para la impresion, esto contiene titulo y parametros enviados al cystalreport

                        DsImprimir = new DataSet("dsConsultaResumenPorMesArmado");//FJRF - DataSet que esta vinculado al CrystalReport

                        //FJRF - ADICIONAMOS LAS TABLAS QUE NECESITE EL DATASET ASOCIADO AL CRYSTAL
                        DsImprimir.Tables.Add(DtEncabezadoYParametros.Copy());//Encabezado Informe
                        DsImprimir.Tables.Add(DtConsultaResumenPorMesArmadoImprimir.Copy());//Detalle del Informe

                        produccion.reportes.Vista vista = new produccion.reportes.Vista { ds = DsImprimir, reporte = StrRutaReporteAImprimir };//FJRF - Enviamos los datos para que se imprima el reporte
                        vista.Show();//FJRF - Ejecutamos el reporte para que se muestre visualmente
                    }
                    #endregion
                }
                else//FJRF - Si el reporte no existe hacemos lo siguiente
                {
                    Msgbox("PROCESO CANCELADO", "El reporte no existe en la ruta: [" + StrRutaReporteAImprimir + "] por favor comuniquese con el administrador del sistema para que corriga este inconveniente.", MessageBoxButton.OK, MessageBoxImage.Error);//FJRF - Enviamos un mensaje al usuario
                }
            }
            catch (Exception ex)//FJRF - Si se presenta algun error hacemos lo siguiente
            {
                Msgbox("PROCESO CANCELADO - [Error del sistema]", ex.Message.ToString(), MessageBoxButton.OK, MessageBoxImage.Error);//FJRF - Enviamos un mensaje al usuario
            }
        }
        protected void PttV_ImprimirResumenPorLinea()
        {
            try//FJRF - Validamos el proceso de impresionrptResumenPorLinea.rpt
            {
                String StrRutaReporteAImprimir = StrRutaReporteCrystalReport + "rptResumenPorLinea.rpt";//FJRF - Armamos la ruta completa donde estara el reporte
                if (System.IO.File.Exists(StrRutaReporteAImprimir) == true)//FJRf - Si el reporte existe hacemos lo siguiente
                {
                    #region FJRF - ImprimimosElReporte
                    if (DtConsultaResumenPorMesArmadoImprimir == null)//FJRF - Validamos que el reporte tenga datos para realizar el proceso de impresion
                    {
                        Msgbox("PROCESO CANCELADO", "No existen datos para imprimir el reporte", MessageBoxButton.OK, MessageBoxImage.Error); //FJRF - Informamos al usuario
                    }
                    else//FJRF - Si trae datos hacemos lo siguiente
                    {
                        CargarParametrosImpresion();//FJRF - Cargamos los parametros para la impresion, esto contiene titulo y parametros enviados al cystalreport

                        DsImprimir = new DataSet("dsConsultaResumenPorMesArmado");//FJRF - DataSet que esta vinculado al CrystalReport

                        //FJRF - ADICIONAMOS LAS TABLAS QUE NECESITE EL DATASET ASOCIADO AL CRYSTAL
                        DsImprimir.Tables.Add(DtEncabezadoYParametros.Copy());//Encabezado Informe
                        DsImprimir.Tables.Add(DtConsultaResumenPorLineaImprimir.Copy());//Detalle del Informe

                        produccion.reportes.Vista vista = new produccion.reportes.Vista { ds = DsImprimir, reporte = StrRutaReporteAImprimir };//FJRF - Enviamos los datos para que se imprima el reporte
                        vista.Show();//FJRF - Ejecutamos el reporte para que se muestre visualmente
                    }
                    #endregion
                }
                else//FJRF - Si el reporte no existe hacemos lo siguiente
                {
                    Msgbox("PROCESO CANCELADO", "El reporte no existe en la ruta: [" + StrRutaReporteAImprimir + "] por favor comuniquese con el administrador del sistema para que corriga este inconveniente.", MessageBoxButton.OK, MessageBoxImage.Error);//FJRF - Enviamos un mensaje al usuario
                }
            }
            catch (Exception ex)//FJRF - Si se presenta algun error hacemos lo siguiente
            {
                Msgbox("PROCESO CANCELADO - [Error del sistema]", ex.Message.ToString(), MessageBoxButton.OK, MessageBoxImage.Error);//FJRF - Enviamos un mensaje al usuario
            }
        }
        protected void PttV_Procesar()
        {
            #region FJRF - CargamosLosParametrosParaClientes
            if (CboCodigoCliente.SelectedItem != null)//FJRF - Validamos que el dato seleccionado no llegue nulo
            {
                StrClienteSeleccionado = CboCodigoCliente.SelectedValue.ToString();//FJRF - Extraemos el codigo del cliente seleccionado por el usuario
            }
            else//FJRF - Si esta nulo o vacio entonces hacemos lo siguiente
            {
                StrClienteSeleccionado = "ZZZ999";//FJRF - Enviamos el parametro como si lo hubiera seleccionado todos
            }
            if (StrClienteSeleccionado == "ZZZ999" || StrClienteSeleccionado == "TODOS")//FJRF - Si el dato seleccionado es igual a [ZZZ999] entonces hacemos lo siguiente
            {
                StrClienteInicial = "   ";//FJRF - Enviamos tres espacios en blanco
                StrClienteFinal = "zzz";//FJRF - Enviamos tres z en minuscula
            }
            else//FJRF - Si el parametro llega con otro dato entonces hacemos lo siguiente
            {
                StrClienteInicial = StrClienteSeleccionado;//FJRF - Enviamos el codigo seleccionado por el usuario
                StrClienteFinal = StrClienteSeleccionado;//FJRF - Enviamos el codigo seleccionado por el usuario
            }
            #endregion

            #region FJRF - CargamosLosParametrosParaSubClientes
            if (CboCodigoSubCliente.SelectedItem != null)//FJRF - Validamos que el dato seleccionado no llegue nulo
            {
                StrSubClienteSeleccionado = CboCodigoSubCliente.SelectedValue.ToString();//FJRF - Extraemos el codigo del subcliente seleccionado por el usuario
            }
            else//FJRF - Si esta nulo o vacio entonces hacemos lo siguiente
            {
                StrSubClienteSeleccionado = "ZZZ999";//FJRF - Enviamos el parametro como si lo hubiera seleccionado todos
            }
            if (StrSubClienteSeleccionado == "ZZZ999" || StrSubClienteSeleccionado == "TODOS")//FJRF - Si el dato seleccionado es igual a [ZZZ999] entonces hacemos lo siguiente
            {
                StrSubClienteInicial = "   ";//FJRF - Enviamos tres espacios en blanco
                StrSubClienteFinal = "zzz";//FJRF - Enviamos tres z en minuscula
            }
            else//FJRF - Si el parametro llega con otro dato entonces hacemos lo siguiente
            {
                StrSubClienteInicial = StrSubClienteSeleccionado;//FJRF - Enviamos el codigo seleccionado por el usuario
                StrSubClienteFinal = StrSubClienteSeleccionado;//FJRF - Enviamos el codigo seleccionado por el usuario
            }
            #endregion

            EjecutarSp_SP_INFRESVTAMES(StrAñoSeleccionado, StrClienteInicial, StrClienteFinal, StrSubClienteInicial, StrSubClienteFinal, StrVerSoloClientesComerciales);//FJRF - Enviamos los parametros para que se ejecute el SP

            PttV_EjecutarConsultas();//FJRF - Ejecutamos las consultas que necesitamos para los grid
        }
        protected void PttV_EjecutarConsultas()
        {
            #region FJRF - EstasOpcionesSonSoloParaElPrimerGridDeArriba
            int IntDesde, IntHasta;
            StrConsulta = "";//FJRF - LIMPIAMOS LA CONSULTA
            if (CkbMostrarUnidades.IsChecked == false && CkbMostrarDinero.IsChecked == false)//FJRF - Si los dos Check estan seleccionados hacemos lo siguiente
            {
                LblTituloGridResumenPorReferencia.Content = "                                                                                                RESUMEN DE VENTAS POR MES (SIN SELECCIÓN DE CRITERIOS)";
                StrConsulta = "SELECT CODLIN_TMP AS SIN, NOMLIN_TMP AS SELECCION FROM TMPRESVTAMES WHERE NOMLIN_TMP = 'http://somoslomejor.com'";//FJRF - armamos la consulta sin datos para


                //FJRF - ESTA CONSULTA (La que esta comentada) MUESTRA LOS DATOS TAL COMO VIENEN EN LA CONSULTA ORIGINAL PRIMERO LAS UNIDADES Y LUEGO EL DINERO

                //StrConsulta = "SELECT CODLIN_TMP AS CODLIN,  NOMLIN_TMP AS LINEA,  CODREF_TMP AS CODREF,  NOMREF_TMP AS REFERENCIA,  CODCOL_TMP AS CODCOL,  NOMCOL_TMP AS COLOR, ";//FJRF - armamos la consulta
                //StrConsulta = StrConsulta + "ENE_TMP AS UNIENE,  FEB_TMP AS UNIFEB,  MAR_TMP AS UNIMAR,  ABR_TMP AS UNIABR,  MAY_TMP AS UNIMAY,  JUN_TMP AS UNIJUN,  JUL_TMP AS UNIJUL,  ";//FJRF - armamos la consulta
                //StrConsulta = StrConsulta + "AGO_TMP AS UNIAGO,  SEP_TMP AS UNISEP,  OCT_TMP AS UNIOCT,  NOV_TMP AS UNINOV,  DIC_TMP AS UNIDIC,  TOT_TMP AS UNITOT,  ";//FJRF - armamos la consulta
                //StrConsulta = StrConsulta + "ENEV_TMP AS DINENE,  FEBV_TMP AS DINFEB,  MARV_TMP AS DINMAR,  ABRV_TMP AS DINABR,  MAYV_TMP AS DINMAY,  JUNV_TMP AS DINJUN,  JULV_TMP AS DINJUL,  ";//FJRF - armamos la consulta
                //StrConsulta = StrConsulta + "AGOV_TMP AS DINAGO,  SEPV_TMP AS DINSEP,  OCTV_TMP AS DINOCT,  NOVV_TMP AS DINNOV,  DICV_TMP AS DINDIC,  TOTV_TMP AS DINTOT  ";//FJRF - armamos la consulta
                //StrConsulta = StrConsulta + "FROM TMPRESVTAMES ";//FJRF - armamos la consulta
                //StrConsulta = StrConsulta + "ORDER BY NOMLIN_TMP, NOMREF_TMP, NOMCOL_TMP";//FJRF - armamos la consulta

                DtConsultaResumenPorReferencia = MdoGeneral.consulta(StrConsulta);//FJRF - Traemos los datos
                DtgResumenPorReferencia.ItemsSource = DtConsultaResumenPorReferencia.DefaultView;//FJRF - Cargamos los datos al grid
            }
            else//FJRF - Si no estan seleccionados los dos check entonces buscamos posibles opciones
            {
                if (CkbMostrarUnidades.IsChecked == true && CkbMostrarDinero.IsChecked == false)//FJRF - Si solo quiere ver unidades hacemos lo siguiente
                {
                    LblTituloGridResumenPorReferencia.Content = "                                                                                                RESUMEN DE VENTAS POR MES (Solo unidades)";

                    StrConsulta = "SELECT CODLIN_TMP AS CODLIN,  NOMLIN_TMP AS LINEA,  CODREF_TMP AS CODREF,  NOMREF_TMP AS REFERENCIA,  CODCOL_TMP AS CODCOL,  NOMCOL_TMP AS COLOR, 'Unidades' AS VENTAS, ";//FJRF - armamos la consulta y creamos un parametro de unidades
                    StrConsulta = StrConsulta + "ENE_TMP AS ENERO,  FEB_TMP AS FEBRERO,  MAR_TMP AS MARZO,  ABR_TMP AS ABRIL,  MAY_TMP AS MAYO,  JUN_TMP AS JUNIO,  JUL_TMP AS JULIO,  ";//FJRF - armamos la consulta
                    StrConsulta = StrConsulta + "AGO_TMP AS AGOSTO,  SEP_TMP AS SEPTIEMBRE,  OCT_TMP AS OCTUBRE,  NOV_TMP AS NOVIEMBRE,  DIC_TMP AS DICIEMBRE,  TOT_TMP AS TOTAL, '1' AS COLORROW  ";//FJRF - armamos la consulta y creamos un parametro para el manejo de las filas
                    StrConsulta = StrConsulta + "FROM TMPRESVTAMES ";//FJRF - armamos la consulta
                    StrConsulta = StrConsulta + "ORDER BY CODLIN_TMP, CODREF_TMP, CODCOL_TMP";//FJRF - armamos la consulta

                    DtConsultaResumenPorReferencia = MdoGeneral.consulta(StrConsulta);//FJRF - Traemos los datos

                    DtConsultaResumenPorReferenciaEnDosLineasImprimir = new DataTable("DtConsultaResumenPorReferenciaEnDosLineasArmado");
                    DtConsultaResumenPorReferenciaEnDosLineasImprimir = DtConsultaResumenPorReferencia.Copy();
                    DtConsultaResumenPorReferenciaEnDosLineasImprimir.TableName = "DtConsultaResumenPorReferenciaEnDosLineasArmado";

                    DtgResumenPorReferencia.ItemsSource = DtConsultaResumenPorReferencia.DefaultView;//FJRF - Cargamos los datos al grid
                    DtgResumenPorReferencia.Columns[20].Visibility = Visibility.Collapsed;
                    DtgResumenPorReferencia.FrozenColumnCount = 7;//FJRF - Inmovilizamos las columnas
                }
                if (CkbMostrarUnidades.IsChecked == false && CkbMostrarDinero.IsChecked == true)//FJRF - Si solo quiere mostrar dinero hacemos lo siguiente
                {
                    LblTituloGridResumenPorReferencia.Content = "                                                                                                RESUMEN DE VENTAS POR MES (Solo dinero)";

                    StrConsulta = "SELECT CODLIN_TMP AS CODLIN,  NOMLIN_TMP AS LINEA,  CODREF_TMP AS CODREF,  NOMREF_TMP AS REFERENCIA,  CODCOL_TMP AS CODCOL,  NOMCOL_TMP AS COLOR, 'Dinero' AS VENTAS, ";//FJRF - armamos la consulta y creamos un parametro de dinero
                    StrConsulta = StrConsulta + "ENEV_TMP AS ENERO,  FEBV_TMP AS FEBRERO,  MARV_TMP AS MARZO,  ABRV_TMP AS ABRIL,  MAYV_TMP AS MAYO,  JUNV_TMP AS JUNIO,  JULV_TMP AS JULIO,  ";//FJRF - armamos la consulta
                    StrConsulta = StrConsulta + "AGOV_TMP AS AGOSTO,  SEPV_TMP AS SEPTIEMBRE,  OCTV_TMP AS OCTUBRE,  NOVV_TMP AS NOVIEMBRE,  DICV_TMP AS DICIEMBRE,  TOTV_TMP AS TOTAL, '1' AS COLORROW  ";//FJRF - armamos la consulta y creamos un parametro para el manejo de las filas
                    StrConsulta = StrConsulta + "FROM TMPRESVTAMES ";//FJRF - armamos la consulta
                    StrConsulta = StrConsulta + "ORDER BY CODLIN_TMP, CODREF_TMP, CODCOL_TMP";//FJRF - armamos la consulta

                    DtConsultaResumenPorReferencia = MdoGeneral.consulta(StrConsulta);//FJRF - Traemos los datos

                    DtConsultaResumenPorReferenciaEnDosLineasImprimir = new DataTable("DtConsultaResumenPorReferenciaEnDosLineasArmado");
                    DtConsultaResumenPorReferenciaEnDosLineasImprimir = DtConsultaResumenPorReferencia.Copy();
                    DtConsultaResumenPorReferenciaEnDosLineasImprimir.TableName = "DtConsultaResumenPorReferenciaEnDosLineasArmado";

                    DtgResumenPorReferencia.ItemsSource = DtConsultaResumenPorReferencia.DefaultView;//FJRF - Cargamos los datos al grid
                    DtgResumenPorReferencia.Columns[20].Visibility = Visibility.Collapsed;
                    DtgResumenPorReferencia.FrozenColumnCount = 7;//FJRF - Inmovilizamos las columnas
                }
                if (CkbMostrarUnidades.IsChecked == true && CkbMostrarDinero.IsChecked == true)//FJRF - [Valos por defecto] si viene sin seleccionar nada hacemos lo siguiente (Este es el grid como lo pidio Mauricio)
                {
                    LblTituloGridResumenPorReferencia.Content = "                                                                                                RESUMEN DE VENTAS POR MES (Unidades con dinero)";

                    StrConsulta = "SELECT CODLIN_TMP AS CODLIN,  NOMLIN_TMP AS LINEA,  CODREF_TMP AS CODREF,  NOMREF_TMP AS REFERENCIA,  CODCOL_TMP AS CODCOL,  NOMCOL_TMP AS COLOR, ";//FJRF - armamos la consulta
                    StrConsulta = StrConsulta + "ENE_TMP AS UNIENE,  FEB_TMP AS UNIFEB,  MAR_TMP AS UNIMAR,  ABR_TMP AS UNIABR,  MAY_TMP AS UNIMAY,  JUN_TMP AS UNIJUN,  JUL_TMP AS UNIJUL,  ";//FJRF - armamos la consulta
                    StrConsulta = StrConsulta + "AGO_TMP AS UNIAGO,  SEP_TMP AS UNISEP,  OCT_TMP AS UNIOCT,  NOV_TMP AS UNINOV,  DIC_TMP AS UNIDIC,  TOT_TMP AS UNITOT,  ";//FJRF - armamos la consulta
                    StrConsulta = StrConsulta + "ENEV_TMP AS DINENE,  FEBV_TMP AS DINFEB,  MARV_TMP AS DINMAR,  ABRV_TMP AS DINABR,  MAYV_TMP AS DINMAY,  JUNV_TMP AS DINJUN,  JULV_TMP AS DINJUL,  ";//FJRF - armamos la consulta
                    StrConsulta = StrConsulta + "AGOV_TMP AS DINAGO,  SEPV_TMP AS DINSEP,  OCTV_TMP AS DINOCT,  NOVV_TMP AS DINNOV,  DICV_TMP AS DINDIC,  TOTV_TMP AS DINTOT  ";//FJRF - armamos la consulta
                    StrConsulta = StrConsulta + "FROM TMPRESVTAMES ";//FJRF - armamos la consulta
                    StrConsulta = StrConsulta + "ORDER BY CODLIN_TMP, CODREF_TMP, CODCOL_TMP";//FJRF - armamos la consulta

                    DtConsultaResumenPorReferenciaEnDosLineas = MdoGeneral.consulta(StrConsulta);//FJRF - Traemos los datos

                    #region FJRF - CreamosLasColumnas_DtConsultaResumenPorLineaArmado
                    DtConsultaResumenPorReferenciaEnDosLineasArmado = new DataTable("DtConsultaResumenPorReferenciaEnDosLineasArmado");//FJRF - Creamos el Dt de procesar datos

                    DtConsultaResumenPorReferenciaEnDosLineasArmado.Columns.Add("CODLIN");//FJRF - CREAMOS LA COLUMNA
                    DtConsultaResumenPorReferenciaEnDosLineasArmado.Columns.Add("LINEA");//FJRF - CREAMOS LA COLUMNA
                    DtConsultaResumenPorReferenciaEnDosLineasArmado.Columns.Add("CODREF");//FJRF - CREAMOS LA COLUMNA
                    DtConsultaResumenPorReferenciaEnDosLineasArmado.Columns.Add("REFERENCIA");//FJRF - CREAMOS LA COLUMNA
                    DtConsultaResumenPorReferenciaEnDosLineasArmado.Columns.Add("CODCOL");//FJRF - CREAMOS LA COLUMNA
                    DtConsultaResumenPorReferenciaEnDosLineasArmado.Columns.Add("COLOR");//FJRF - CREAMOS LA COLUMNA

                    DtConsultaResumenPorReferenciaEnDosLineasArmado.Columns.Add("VENTAS");//FJRF - CREAMOS LA COLUMNA

                    DtConsultaResumenPorReferenciaEnDosLineasArmado.Columns.Add("ENERO", typeof(Double));//FJRF - CREAMOS LA COLUMNA
                    DtConsultaResumenPorReferenciaEnDosLineasArmado.Columns.Add("FEBRERO", typeof(Double));//FJRF - CREAMOS LA COLUMNA
                    DtConsultaResumenPorReferenciaEnDosLineasArmado.Columns.Add("MARZO", typeof(Double));//FJRF - CREAMOS LA COLUMNA
                    DtConsultaResumenPorReferenciaEnDosLineasArmado.Columns.Add("ABRIL", typeof(Double));//FJRF - CREAMOS LA COLUMNA
                    DtConsultaResumenPorReferenciaEnDosLineasArmado.Columns.Add("MAYO", typeof(Double));//FJRF - CREAMOS LA COLUMNA
                    DtConsultaResumenPorReferenciaEnDosLineasArmado.Columns.Add("JUNIO", typeof(Double));//FJRF - CREAMOS LA COLUMNA
                    DtConsultaResumenPorReferenciaEnDosLineasArmado.Columns.Add("JULIO", typeof(Double));//FJRF - CREAMOS LA COLUMNA
                    DtConsultaResumenPorReferenciaEnDosLineasArmado.Columns.Add("AGOSTO", typeof(Double));//FJRF - CREAMOS LA COLUMNA
                    DtConsultaResumenPorReferenciaEnDosLineasArmado.Columns.Add("SEPTIEMBRE", typeof(Double));//FJRF - CREAMOS LA COLUMNA
                    DtConsultaResumenPorReferenciaEnDosLineasArmado.Columns.Add("OCTUBRE", typeof(Double));//FJRF - CREAMOS LA COLUMNA
                    DtConsultaResumenPorReferenciaEnDosLineasArmado.Columns.Add("NOVIEMBRE", typeof(Double));//FJRF - CREAMOS LA COLUMNA
                    DtConsultaResumenPorReferenciaEnDosLineasArmado.Columns.Add("DICIEMBRE", typeof(Double));//FJRF - CREAMOS LA COLUMNA

                    DtConsultaResumenPorReferenciaEnDosLineasArmado.Columns.Add("TOTAL", typeof(Double));//FJRF - CREAMOS LA COLUMNA

                    DtConsultaResumenPorReferenciaEnDosLineasArmado.Columns.Add("COLORROW");//FJRF - CREAMOS LA COLUMNA

                    #endregion

                    #region FJRF - ArmamosElNuevoFormatoDeLaConsultaParaElGrid

                    IntHasta = 2;
                    int IntColor = 1;
                    for (int IntFilaActual = 0; IntFilaActual < DtConsultaResumenPorReferenciaEnDosLineas.Rows.Count; IntFilaActual++)//FJRF - Recorremos la informacion encontrada
                    {
                        IntDesde = 1;
                        while (IntDesde <= IntHasta)//FJRF - Recorremos los 12 meses
                        {
                            DrNuevasFilas = DtConsultaResumenPorReferenciaEnDosLineasArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos
                            if (IntDesde == 1)
                            {
                                DrNuevasFilas["COLORROW"] = IntColor;//FJRF - Enviamos los datos encontrados

                                DrNuevasFilas["CODLIN"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][0].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["LINEA"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][1].ToString();//FJRF - Enviamos los datos encontrados

                                DrNuevasFilas["CODREF"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][2].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["REFERENCIA"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][3].ToString();//FJRF - Enviamos los datos encontrados

                                DrNuevasFilas["CODCOL"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][4].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["COLOR"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][5].ToString();//FJRF - Enviamos los datos encontrados

                                DrNuevasFilas["VENTAS"] = "Unidades";//FJRF - Enviamos los datos encontrados

                                DrNuevasFilas["ENERO"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][6].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["FEBRERO"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][7].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["MARZO"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][8].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["ABRIL"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][9].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["MAYO"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][10].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["JUNIO"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][11].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["JULIO"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][12].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["AGOSTO"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][13].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["SEPTIEMBRE"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][14].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["OCTUBRE"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][15].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["NOVIEMBRE"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][16].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["DICIEMBRE"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][17].ToString();//FJRF - Enviamos los datos encontrados

                                DrNuevasFilas["TOTAL"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][18].ToString();//FJRF - Enviamos los datos encontrados
                            }
                            else
                            {
                                String StrCodigoColorZZ = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][4].ToString();

                                DrNuevasFilas["COLORROW"] = IntColor;//FJRF - Enviamos los datos encontrados

                                DrNuevasFilas["CODLIN"] = "";//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["LINEA"] = "";//FJRF - Enviamos los datos encontrados

                                DrNuevasFilas["CODREF"] = "";//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["REFERENCIA"] = "";//FJRF - Enviamos los datos encontrados

                                if (StrCodigoColorZZ == "zz")
                                {
                                    DrNuevasFilas["CODCOL"] = StrCodigoColorZZ;//FJRF - Enviamos los datos encontrados
                                }
                                else
                                {
                                    DrNuevasFilas["CODCOL"] = "";//FJRF - Enviamos los datos encontrados
                                }

                                DrNuevasFilas["COLOR"] = "";//FJRF - Enviamos los datos encontrados

                                DrNuevasFilas["VENTAS"] = "Dinero";//FJRF - Enviamos los datos encontrados

                                DrNuevasFilas["ENERO"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][19].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["FEBRERO"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][20].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["MARZO"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][21].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["ABRIL"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][22].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["MAYO"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][23].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["JUNIO"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][24].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["JULIO"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][25].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["AGOSTO"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][26].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["SEPTIEMBRE"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][27].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["OCTUBRE"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][28].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["NOVIEMBRE"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][29].ToString();//FJRF - Enviamos los datos encontrados
                                DrNuevasFilas["DICIEMBRE"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][30].ToString();//FJRF - Enviamos los datos encontrados

                                DrNuevasFilas["TOTAL"] = DtConsultaResumenPorReferenciaEnDosLineas.Rows[IntFilaActual][31].ToString();//FJRF - Enviamos los datos encontrados
                            }
                            DtConsultaResumenPorReferenciaEnDosLineasArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                            IntDesde++;//FJRF - Incrementamos el mes
                        }
                        if (IntColor == 1)//FJRF - Verificamos que numero de color viene
                        {
                            IntColor = 2;//FJRF - Asignamos el numero de color
                        }
                        else
                        {
                            IntColor = 1;//FJRF - Asignamos el numero de color
                        }
                    }
                    DtConsultaResumenPorReferenciaEnDosLineasArmado.TableName = "DtConsultaResumenPorReferenciaEnDosLineasArmado";

                    DtConsultaResumenPorReferenciaEnDosLineasImprimir = new DataTable("DtConsultaResumenPorReferenciaEnDosLineasArmado");
                    DtConsultaResumenPorReferenciaEnDosLineasImprimir = DtConsultaResumenPorReferenciaEnDosLineasArmado.Copy();
                    DtConsultaResumenPorReferenciaEnDosLineasImprimir.TableName = "DtConsultaResumenPorReferenciaEnDosLineasArmado";

                    DtgResumenPorReferencia.ItemsSource = DtConsultaResumenPorReferenciaEnDosLineasArmado.DefaultView;//FJRF - Cargamos los datos al grid
                    DtgResumenPorReferencia.Columns[20].Visibility = Visibility.Collapsed;
                    DtgResumenPorReferencia.FrozenColumnCount = 7;//FJRF - Inmovilizamos las columnas
                    #endregion

                }
            }

            //FJRF - Buscamos la tabla que devuelve
            #endregion

            #region FJRF - EstasOpcionesSonSoloParaElSegundoGridDelLadoIzquierdo
            StrConsulta = "SELECT * FROM VIS_TMP_RESVENMES";//FJRF - armamos la consulta
            DtConsultaResumenPorMes = MdoGeneral.consulta(StrConsulta);//FJRF - Traemos los datos

            #region FJRF - CreamosLasColumnas_DtConsultaResumenPorMesArmado
            DtConsultaResumenPorMesArmado = new DataTable("DtConsultaResumenPorMesArmado");//FJRF - Creamos el Dt de procesar datos

            DtConsultaResumenPorMesArmado.Columns.Add("MES");//FJRF - CREAMOS LA COLUMNA
            DtConsultaResumenPorMesArmado.Columns.Add("CANTIDAD", typeof(Double));//FJRF - CREAMOS LA COLUMNA
            DtConsultaResumenPorMesArmado.Columns.Add("VALOR", typeof(Double));//FJRF - CREAMOS LA COLUMNA
            DtConsultaResumenPorMesArmado.Columns.Add("PROMEDIO", typeof(Double));//FJRF - CREAMOS LA COLUMNA
            #endregion

            #region FJRF - ArmamosElNuevoFormatoDeLaConsultaParaElGrid
            IntDesde = 1;
            IntHasta = 12;

            for (int IntFilaActual = 0; IntFilaActual < DtConsultaResumenPorMes.Rows.Count; IntFilaActual++)//FJRF - Recorremos la informacion encontrada
            {
                while (IntDesde <= IntHasta)//FJRF - Recorremos los 12 meses
                {
                    if (IntDesde == 1)//FJRF - Si el mes es igual a [ENERO] hacemos lo siguiente...
                    {
                        DrNuevasFilas = DtConsultaResumenPorMesArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                        DrNuevasFilas["MES"] = "ENERO";//FJRF - Le creamos el mes a la fila
                        DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorMes.Rows[IntFilaActual][0].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["VALOR"] = DtConsultaResumenPorMes.Rows[IntFilaActual][1].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorMes.Rows[IntFilaActual][2].ToString();//FJRF - Enviamos los datos encontrados

                        DtConsultaResumenPorMesArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                        IntDesde++;//FJRF - Incrementamos el mes
                    }
                    if (IntDesde == 2)//FJRF - Si el mes es igual a [FEBRERO] hacemos lo siguiente...
                    {
                        DrNuevasFilas = DtConsultaResumenPorMesArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                        DrNuevasFilas["MES"] = "FEBRERO";//FJRF - Le creamos el mes a la fila
                        DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorMes.Rows[IntFilaActual][3].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["VALOR"] = DtConsultaResumenPorMes.Rows[IntFilaActual][4].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorMes.Rows[IntFilaActual][5].ToString();//FJRF - Enviamos los datos encontrados

                        DtConsultaResumenPorMesArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                        IntDesde++;//FJRF - Incrementamos el mes
                    }
                    if (IntDesde == 3)//FJRF - Si el mes es igual a [MARZO] hacemos lo siguiente...
                    {
                        DrNuevasFilas = DtConsultaResumenPorMesArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                        DrNuevasFilas["MES"] = "MARZO";//FJRF - Le creamos el mes a la fila
                        DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorMes.Rows[IntFilaActual][6].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["VALOR"] = DtConsultaResumenPorMes.Rows[IntFilaActual][7].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorMes.Rows[IntFilaActual][8].ToString();//FJRF - Enviamos los datos encontrados

                        DtConsultaResumenPorMesArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                        IntDesde++;//FJRF - Incrementamos el mes
                    }
                    if (IntDesde == 4)//FJRF - Si el mes es igual a [ABRIL] hacemos lo siguiente...
                    {
                        DrNuevasFilas = DtConsultaResumenPorMesArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                        DrNuevasFilas["MES"] = "ABRIL";//FJRF - Le creamos el mes a la fila
                        DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorMes.Rows[IntFilaActual][9].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["VALOR"] = DtConsultaResumenPorMes.Rows[IntFilaActual][10].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorMes.Rows[IntFilaActual][11].ToString();//FJRF - Enviamos los datos encontrados

                        DtConsultaResumenPorMesArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                        IntDesde++;//FJRF - Incrementamos el mes
                    }
                    if (IntDesde == 5)//FJRF - Si el mes es igual a [MAYO] hacemos lo siguiente...
                    {
                        DrNuevasFilas = DtConsultaResumenPorMesArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                        DrNuevasFilas["MES"] = "MAYO";//FJRF - Le creamos el mes a la fila
                        DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorMes.Rows[IntFilaActual][12].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["VALOR"] = DtConsultaResumenPorMes.Rows[IntFilaActual][13].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorMes.Rows[IntFilaActual][14].ToString();//FJRF - Enviamos los datos encontrados

                        DtConsultaResumenPorMesArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                        IntDesde++;//FJRF - Incrementamos el mes
                    }
                    if (IntDesde == 6)//FJRF - Si el mes es igual a [JUNIO] hacemos lo siguiente...
                    {
                        DrNuevasFilas = DtConsultaResumenPorMesArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                        DrNuevasFilas["MES"] = "JUNIO";//FJRF - Le creamos el mes a la fila
                        DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorMes.Rows[IntFilaActual][15].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["VALOR"] = DtConsultaResumenPorMes.Rows[IntFilaActual][16].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorMes.Rows[IntFilaActual][17].ToString();//FJRF - Enviamos los datos encontrados

                        DtConsultaResumenPorMesArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                        IntDesde++;//FJRF - Incrementamos el mes
                    }
                    if (IntDesde == 7)//FJRF - Si el mes es igual a [JULIO] hacemos lo siguiente...
                    {
                        DrNuevasFilas = DtConsultaResumenPorMesArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                        DrNuevasFilas["MES"] = "JULIO";//FJRF - Le creamos el mes a la fila
                        DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorMes.Rows[IntFilaActual][18].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["VALOR"] = DtConsultaResumenPorMes.Rows[IntFilaActual][19].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorMes.Rows[IntFilaActual][20].ToString();//FJRF - Enviamos los datos encontrados

                        DtConsultaResumenPorMesArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                        IntDesde++;//FJRF - Incrementamos el mes
                    }
                    if (IntDesde == 8)//FJRF - Si el mes es igual a [AGOSTO] hacemos lo siguiente...
                    {
                        DrNuevasFilas = DtConsultaResumenPorMesArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                        DrNuevasFilas["MES"] = "AGOSTO";//FJRF - Le creamos el mes a la fila
                        DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorMes.Rows[IntFilaActual][21].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["VALOR"] = DtConsultaResumenPorMes.Rows[IntFilaActual][22].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorMes.Rows[IntFilaActual][23].ToString();//FJRF - Enviamos los datos encontrados

                        DtConsultaResumenPorMesArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                        IntDesde++;//FJRF - Incrementamos el mes
                    }
                    if (IntDesde == 9)//FJRF - Si el mes es igual a [SEPTIEMBRE] hacemos lo siguiente...
                    {
                        DrNuevasFilas = DtConsultaResumenPorMesArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                        DrNuevasFilas["MES"] = "SEPTIEMBRE";//FJRF - Le creamos el mes a la fila
                        DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorMes.Rows[IntFilaActual][24].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["VALOR"] = DtConsultaResumenPorMes.Rows[IntFilaActual][25].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorMes.Rows[IntFilaActual][26].ToString();//FJRF - Enviamos los datos encontrados

                        DtConsultaResumenPorMesArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                        IntDesde++;//FJRF - Incrementamos el mes
                    }
                    if (IntDesde == 10)//FJRF - Si el mes es igual a [OCTUBRE] hacemos lo siguiente...
                    {
                        DrNuevasFilas = DtConsultaResumenPorMesArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                        DrNuevasFilas["MES"] = "OCTUBRE";//FJRF - Le creamos el mes a la fila
                        DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorMes.Rows[IntFilaActual][27].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["VALOR"] = DtConsultaResumenPorMes.Rows[IntFilaActual][28].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorMes.Rows[IntFilaActual][29].ToString();//FJRF - Enviamos los datos encontrados

                        DtConsultaResumenPorMesArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                        IntDesde++;//FJRF - Incrementamos el mes
                    }
                    if (IntDesde == 11)//FJRF - Si el mes es igual a [NOVIEMBRE] hacemos lo siguiente...
                    {
                        DrNuevasFilas = DtConsultaResumenPorMesArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                        DrNuevasFilas["MES"] = "NOVIEMBRE";//FJRF - Le creamos el mes a la fila
                        DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorMes.Rows[IntFilaActual][30].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["VALOR"] = DtConsultaResumenPorMes.Rows[IntFilaActual][31].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorMes.Rows[IntFilaActual][32].ToString();//FJRF - Enviamos los datos encontrados

                        DtConsultaResumenPorMesArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                        IntDesde++;//FJRF - Incrementamos el mes
                    }
                    if (IntDesde == 12)//FJRF - Si el mes es igual a [DICIEMBRE] hacemos lo siguiente...
                    {
                        DrNuevasFilas = DtConsultaResumenPorMesArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                        DrNuevasFilas["MES"] = "DICIEMBRE";//FJRF - Le creamos el mes a la fila
                        DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorMes.Rows[IntFilaActual][33].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["VALOR"] = DtConsultaResumenPorMes.Rows[IntFilaActual][34].ToString();//FJRF - Enviamos los datos encontrados
                        DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorMes.Rows[IntFilaActual][35].ToString();//FJRF - Enviamos los datos encontrados

                        DtConsultaResumenPorMesArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                        IntDesde++;//FJRF - Incrementamos el mes
                    }
                }
            }
            DtgResumenPorMes.ItemsSource = DtConsultaResumenPorMesArmado.DefaultView;//FJRF - Cargamos los datos al grid

            DtConsultaResumenPorMesArmadoImprimir = new DataTable("DtResumenPorMesArmadoImprimir");//FJRF - Creamos una nueva instancia (Este nombre debe ser igual al creado en el DataSet del cystal)
            DtConsultaResumenPorMesArmadoImprimir = DtConsultaResumenPorMesArmado.Copy();//FJRF - Asignamos los datos
            DtConsultaResumenPorMesArmadoImprimir.TableName = "DtResumenPorMesArmadoImprimir";//FJRF - Le damos un nombre a la tabla para poder verla en el DataSet (Este nombre debe ser igual al creado en el DataSet del cystal)
            #endregion

            #endregion

            #region FJRF - EstasOpcionesSonSoloParaElSegundoGridDelLadoDerecho

            if (CkbDiscriminarPorMesResumenPorLinea.IsChecked == false)
            {
                StrConsulta = "SELECT ";//FJRF - LIMPIAMOS LA CONSULTA
                StrConsulta = StrConsulta + "CODLIN,  LINEA,  ";//FJRF - Creamos la consulta
                StrConsulta = StrConsulta + "(UNIDAD_ENERO + UNIDAD_FEBRERO + UNIDAD_MARZO + UNIDAD_ABRIL + UNIDAD_MAYO + UNIDAD_JUNIO + UNIDAD_JULIO + UNIDAD_AGOSTO + UNIDAD_SEPTIEMBRE + UNIDAD_OCTUBRE + UNIDAD_NOVIEMBRE + UNIDAD_DICIEMBRE) AS CANTIDAD, ";//FJRF - Creamos la consulta
                StrConsulta = StrConsulta + "(VALOR_ENERO + VALOR_FEBRERO + VALOR_MARZO + VALOR_ABRIL + VALOR_MAYO + VALOR_JUNIO + VALOR_JULIO + VALOR_AGOSTO + VALOR_SEPTIEMBRE + VALOR_OCTUBRE + VALOR_NOVIEMBRE + VALOR_DICIEMBRE) AS VALOR, ";//FJRF - Creamos la consulta
                StrConsulta = StrConsulta + "(PROMEDIO_ENERO + PROMEDIO_FEBRERO + PROMEDIO_MARZO + PROMEDIO_ABR + PROMEDIO_MAYO + PROMEDIO_JUNIO + PROMEDIO_JULIO + PROMEDIO_AGOSTO + PROMEDIO_SEPTIEMBRE + PROMEDIO_OCTUBRE + PROMEDIO_NOVIEMBRE + PROMEDIO_DICIEMBRE) AS PROMEDIO ";//FJRF - Creamos la consulta
                StrConsulta = StrConsulta + "FROM VIS_TMP_RESVENMESLIN ";//FJRF - Creamos la consulta
                
                DtConsultaResumenPorLinea = MdoGeneral.consulta(StrConsulta);//FJRF - Traemos los datos
                DtgResumenPorLinea.ItemsSource = DtConsultaResumenPorLinea.DefaultView;//FJRF - Cargamos los datos al grid

                DtConsultaResumenPorLineaImprimir = new DataTable("DtResumenPorLineaImprimir");//FJRF - Creamos una nueva instancia (Este nombre debe ser igual al creado en el DataSet del cystal)
                DtConsultaResumenPorLineaImprimir = DtConsultaResumenPorLinea.Copy();//FJRF - Asignamos los datos
                DtConsultaResumenPorLineaImprimir.TableName = "DtResumenPorLineaImprimir";//FJRF - Le damos un nombre a la tabla para poder verla en el DataSet (Este nombre debe ser igual al creado en el DataSet del cystal)
            }
            else
            {
                StrConsulta = "SELECT * FROM VIS_TMP_RESVENMESLIN";//FJRF - LIMPIAMOS LA CONSULTA
                DtConsultaResumenPorLinea = MdoGeneral.consulta(StrConsulta);//FJRF - Traemos los datos

                #region FJRF - CreamosLasColumnas_DtConsultaResumenPorLineaArmado
                DtConsultaResumenPorLineaArmado = new DataTable("DtConsultaResumenPorLineaArmado");//FJRF - Creamos el Dt de procesar datos

                DtConsultaResumenPorLineaArmado.Columns.Add("CODIGO");//FJRF - CREAMOS LA COLUMNA
                DtConsultaResumenPorLineaArmado.Columns.Add("LINEA");//FJRF - CREAMOS LA COLUMNA
                DtConsultaResumenPorLineaArmado.Columns.Add("MES");//FJRF - CREAMOS LA COLUMNA
                DtConsultaResumenPorLineaArmado.Columns.Add("CANTIDAD", typeof(Double));//FJRF - CREAMOS LA COLUMNA
                DtConsultaResumenPorLineaArmado.Columns.Add("VALOR", typeof(Double));//FJRF - CREAMOS LA COLUMNA
                DtConsultaResumenPorLineaArmado.Columns.Add("PROMEDIO", typeof(Double));//FJRF - CREAMOS LA COLUMNA
                #endregion

                #region FJRF - ArmamosElNuevoFormatoDeLaConsultaParaElGrid
                IntHasta = 12;

                for (int IntFilaActual = 0; IntFilaActual < DtConsultaResumenPorLinea.Rows.Count; IntFilaActual++)//FJRF - Recorremos la informacion encontrada
                {
                    IntDesde = 1;
                    while (IntDesde <= IntHasta)//FJRF - Recorremos los 12 meses
                    {
                        DrNuevasFilas = DtConsultaResumenPorLineaArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos
                        if (IntDesde == 1)//FJRF - Si el mes es igual a [ENERO] hacemos lo siguiente...
                        {
                            DrNuevasFilas["MES"] = "ENERO";//FJRF - Le creamos el mes a la fila

                            DrNuevasFilas["CODIGO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][0].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["LINEA"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][1].ToString();//FJRF - Enviamos los datos encontrados

                            DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][2].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["VALOR"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][3].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][4].ToString();//FJRF - Enviamos los datos encontrados

                            DtConsultaResumenPorLineaArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                            IntDesde++;//FJRF - Incrementamos el mes
                        }
                        if (IntDesde == 2)//FJRF - Si el mes es igual a [FEBRERO] hacemos lo siguiente...
                        {
                            DrNuevasFilas = DtConsultaResumenPorLineaArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                            DrNuevasFilas["MES"] = "FEBRERO";//FJRF - Le creamos el mes a la fila

                            DrNuevasFilas["CODIGO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][0].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["LINEA"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][1].ToString();//FJRF - Enviamos los datos encontrados

                            DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][5].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["VALOR"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][6].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][7].ToString();//FJRF - Enviamos los datos encontrados

                            DtConsultaResumenPorLineaArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                            IntDesde++;//FJRF - Incrementamos el mes
                        }
                        if (IntDesde == 3)//FJRF - Si el mes es igual a [MARZO] hacemos lo siguiente...
                        {
                            DrNuevasFilas = DtConsultaResumenPorLineaArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                            DrNuevasFilas["MES"] = "MARZO";//FJRF - Le creamos el mes a la fila

                            DrNuevasFilas["CODIGO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][0].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["LINEA"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][1].ToString();//FJRF - Enviamos los datos encontrados

                            DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][8].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["VALOR"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][9].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][10].ToString();//FJRF - Enviamos los datos encontrados

                            DtConsultaResumenPorLineaArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                            IntDesde++;//FJRF - Incrementamos el mes
                        }
                        if (IntDesde == 4)//FJRF - Si el mes es igual a [ABRIL] hacemos lo siguiente...
                        {
                            DrNuevasFilas = DtConsultaResumenPorLineaArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                            DrNuevasFilas["MES"] = "ABRIL";//FJRF - Le creamos el mes a la fila

                            DrNuevasFilas["CODIGO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][0].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["LINEA"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][1].ToString();//FJRF - Enviamos los datos encontrados

                            DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][11].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["VALOR"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][12].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][13].ToString();//FJRF - Enviamos los datos encontrados

                            DtConsultaResumenPorLineaArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                            IntDesde++;//FJRF - Incrementamos el mes
                        }
                        if (IntDesde == 5)//FJRF - Si el mes es igual a [MAYO] hacemos lo siguiente...
                        {
                            DrNuevasFilas = DtConsultaResumenPorLineaArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                            DrNuevasFilas["MES"] = "MAYO";//FJRF - Le creamos el mes a la fila

                            DrNuevasFilas["CODIGO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][0].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["LINEA"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][1].ToString();//FJRF - Enviamos los datos encontrados

                            DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][14].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["VALOR"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][15].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][16].ToString();//FJRF - Enviamos los datos encontrados

                            DtConsultaResumenPorLineaArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                            IntDesde++;//FJRF - Incrementamos el mes
                        }
                        if (IntDesde == 6)//FJRF - Si el mes es igual a [JUNIO] hacemos lo siguiente...
                        {
                            DrNuevasFilas = DtConsultaResumenPorLineaArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                            DrNuevasFilas["MES"] = "JUNIO";//FJRF - Le creamos el mes a la fila

                            DrNuevasFilas["CODIGO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][0].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["LINEA"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][1].ToString();//FJRF - Enviamos los datos encontrados

                            DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][17].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["VALOR"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][18].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][19].ToString();//FJRF - Enviamos los datos encontrados

                            DtConsultaResumenPorLineaArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                            IntDesde++;//FJRF - Incrementamos el mes
                        }
                        if (IntDesde == 7)//FJRF - Si el mes es igual a [JULIO] hacemos lo siguiente...
                        {
                            DrNuevasFilas = DtConsultaResumenPorLineaArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                            DrNuevasFilas["MES"] = "JULIO";//FJRF - Le creamos el mes a la fila

                            DrNuevasFilas["CODIGO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][0].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["LINEA"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][1].ToString();//FJRF - Enviamos los datos encontrados

                            DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][20].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["VALOR"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][21].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][22].ToString();//FJRF - Enviamos los datos encontrados

                            DtConsultaResumenPorLineaArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                            IntDesde++;//FJRF - Incrementamos el mes
                        }
                        if (IntDesde == 8)//FJRF - Si el mes es igual a [AGOSTO] hacemos lo siguiente...
                        {
                            DrNuevasFilas = DtConsultaResumenPorLineaArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                            DrNuevasFilas["MES"] = "AGOSTO";//FJRF - Le creamos el mes a la fila

                            DrNuevasFilas["CODIGO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][0].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["LINEA"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][1].ToString();//FJRF - Enviamos los datos encontrados

                            DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][23].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["VALOR"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][24].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][25].ToString();//FJRF - Enviamos los datos encontrados

                            DtConsultaResumenPorLineaArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                            IntDesde++;//FJRF - Incrementamos el mes
                        }
                        if (IntDesde == 9)//FJRF - Si el mes es igual a [SEPTIEMBRE] hacemos lo siguiente...
                        {
                            DrNuevasFilas = DtConsultaResumenPorLineaArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                            DrNuevasFilas["MES"] = "SEPTIEMBRE";//FJRF - Le creamos el mes a la fila

                            DrNuevasFilas["CODIGO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][0].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["LINEA"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][1].ToString();//FJRF - Enviamos los datos encontrados

                            DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][26].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["VALOR"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][27].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][28].ToString();//FJRF - Enviamos los datos encontrados

                            DtConsultaResumenPorLineaArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                            IntDesde++;//FJRF - Incrementamos el mes
                        }
                        if (IntDesde == 10)//FJRF - Si el mes es igual a [OCTUBRE] hacemos lo siguiente...
                        {
                            DrNuevasFilas = DtConsultaResumenPorLineaArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                            DrNuevasFilas["MES"] = "OCTUBRE";//FJRF - Le creamos el mes a la fila

                            DrNuevasFilas["CODIGO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][0].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["LINEA"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][1].ToString();//FJRF - Enviamos los datos encontrados

                            DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][29].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["VALOR"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][30].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][31].ToString();//FJRF - Enviamos los datos encontrados

                            DtConsultaResumenPorLineaArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                            IntDesde++;//FJRF - Incrementamos el mes
                        }
                        if (IntDesde == 11)//FJRF - Si el mes es igual a [NOVIEMBRE] hacemos lo siguiente...
                        {
                            DrNuevasFilas = DtConsultaResumenPorLineaArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                            DrNuevasFilas["MES"] = "NOVIEMBRE";//FJRF - Le creamos el mes a la fila

                            DrNuevasFilas["CODIGO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][0].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["LINEA"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][1].ToString();//FJRF - Enviamos los datos encontrados

                            DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][32].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["VALOR"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][33].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][34].ToString();//FJRF - Enviamos los datos encontrados

                            DtConsultaResumenPorLineaArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                            IntDesde++;//FJRF - Incrementamos el mes
                        }
                        if (IntDesde == 12)//FJRF - Si el mes es igual a [DICIEMBRE] hacemos lo siguiente...
                        {
                            DrNuevasFilas = DtConsultaResumenPorLineaArmado.NewRow();//FJRF - Creamos una fila nueva para ingresar los datos

                            DrNuevasFilas["MES"] = "DICIEMBRE";//FJRF - Le creamos el mes a la fila

                            DrNuevasFilas["CODIGO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][0].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["LINEA"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][1].ToString();//FJRF - Enviamos los datos encontrados

                            DrNuevasFilas["CANTIDAD"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][35].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["VALOR"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][36].ToString();//FJRF - Enviamos los datos encontrados
                            DrNuevasFilas["PROMEDIO"] = DtConsultaResumenPorLinea.Rows[IntFilaActual][37].ToString();//FJRF - Enviamos los datos encontrados

                            DtConsultaResumenPorLineaArmado.Rows.Add(DrNuevasFilas);//FJRF - Adicionamos los datos creados a la tabla
                            IntDesde++;//FJRF - Incrementamos el mes
                        }
                    }
                }
                DtgResumenPorLinea.ItemsSource = DtConsultaResumenPorLineaArmado.DefaultView;//FJRF - Cargamos los datos al grid
                #endregion
            }

            #endregion
        }
        protected void PttV_Salir()
        {
            this.Close();//FJRF - Cierra el modulo actual
        }
        protected void PttV_CargarClientesComerciales()
        {
            if (CboAño.SelectedItem != null)//FJRF - Validamos que el dato seleccionado no llegue nulo
            {
                StrAñoSeleccionado = CboAño.SelectedItem.ToString();//FJRF - Extraemos el año seleccionado por el usuario
            }
            StrConsulta = "SELECT DISTINCT CODCLI_EOD, NOMCLI_CLI FROM ENCORDD, MAECLIP WHERE TO_CHAR(FECORD_EOD, 'YYYY') = '" + StrAñoSeleccionado + "' AND CODCLI_CLI = CODCLI_EOD ORDER BY NOMCLI_CLI";//FJRF - Hacemos la consulta

            CargarCombo(CboCodigoCliente, StrConsulta, "CODCLI_EOD", "CODCLI_EOD", "Codigo");//FJRF - Cargamos el codigo
            CargarCombo(CboNombreCliente, StrConsulta, "CODCLI_EOD", "NOMCLI_CLI", "Nombre");//FJRF - Cargamos el nombre
        }
        protected void PttV_CargarSubClientes()
        {
            if (CboCodigoCliente.SelectedItem != null)
            {
                String StrClienteSeleccionado = "";//FJRF - Creamos la variable que contendra el codigo del cliente
                StrClienteSeleccionado = CboCodigoCliente.SelectedItem.ToString();//FJRF - Extraemos el codigo del cliente seleccionado

                StrConsulta = "SELECT CODCLI_CLI, NOMCLI_CLI FROM MAECLIP WHERE CLIPPAL_CLI = 'BOS' ORDER BY NOMCLI_CLI";//FJRF - Realizamos la consulta

                CargarCombo(CboCodigoSubCliente, StrConsulta, "CODCLI_CLI", "CODCLI_CLI", "Codigo");//FJRF - Cargamos el codigo
                CargarCombo(CboNombreSubCliente, StrConsulta, "CODCLI_CLI", "NOMCLI_CLI", "Nombre");//FJRF - Cargamos el nombre
            }
            else
            {
                //StrCaptionBox = "PROCESO CANCELADO";//FJRF - Titulo del mensaje
                //StrMensajeBox = "No existen clientes cargados para poder traer la información de los subclientes";//FJRF - Mensaje a enviar

                //Msgbox(StrCaptionBox,StrMensajeBox,MessageBoxButton.OK,MessageBoxImage.Stop);//FJRF - Enviamos un mensaje al usuario
            }
        }
        protected void PttV_LimpiarCombos()
        {
            #region FJRF - LimpiamosLosClientes
            CboCodigoCliente.ItemsSource = null;//FJRF - Quitamos los datos enlazados en el combo
            CboNombreCliente.ItemsSource = null;//FJRF - Quitamos los datos enlazados en el combo

            CboCodigoCliente.Items.Clear();//FJRF - Limpiamos los datos que hay en el combo
            CboNombreCliente.Items.Clear();//FJRF - Limpiamos los datos que hay en el combo
            #endregion

            #region FJRF - LimpiamosLosSubClientes
            CboCodigoSubCliente.ItemsSource = null;//FJRF - Quitamos los datos enlazados en el combo
            CboNombreSubCliente.ItemsSource = null;//FJRF - Quitamos los datos enlazados en el combo

            CboCodigoSubCliente.Items.Clear();//FJRF - Limpiamos los datos que hay en el combo
            CboNombreSubCliente.Items.Clear();//FJRF - Limpiamos los datos que hay en el combo
            #endregion
        }
        private void EjecutarSp_SP_INFRESVTAMES(String Str_pnu_ano, String Str_pva_cliini, String Str_pva_clifin, String Str_pva_subini, String Str_pva_subfin, String Str_pva_solcom)//FJRF - Este procedimiento ejecuta un sp
        {
            try
            {
                MDOgeneral.spComando.CommandText = "SP_INFRESVTAMES";
                MDOgeneral.spComando.Connection = MDOgeneral.conexion;
                MDOgeneral.spComando.CommandType = CommandType.StoredProcedure;
                MDOgeneral.spComando.Parameters.Clear();

                //Input
                MDOgeneral.spComando.Parameters.Add("pnu_ano", Oracle.DataAccess.Client.OracleDbType.Varchar2, 40).Value = Str_pnu_ano;

                MDOgeneral.spComando.Parameters.Add("pva_cliini", Oracle.DataAccess.Client.OracleDbType.Varchar2, 40).Value = String.IsNullOrEmpty(Str_pva_cliini) ? "   " : Str_pva_cliini;
                MDOgeneral.spComando.Parameters.Add("pva_clifin", Oracle.DataAccess.Client.OracleDbType.Varchar2, 40).Value = String.IsNullOrEmpty(Str_pva_clifin) ? "zzz" : Str_pva_clifin;

                MDOgeneral.spComando.Parameters.Add("pva_subini", Oracle.DataAccess.Client.OracleDbType.Varchar2, 40).Value = String.IsNullOrEmpty(Str_pva_subini) ? "   " : Str_pva_subini;
                MDOgeneral.spComando.Parameters.Add("pva_subfin", Oracle.DataAccess.Client.OracleDbType.Varchar2, 40).Value = String.IsNullOrEmpty(Str_pva_subfin) ? "zzz" : Str_pva_subfin;

                MDOgeneral.spComando.Parameters.Add("pva_solcom", Oracle.DataAccess.Client.OracleDbType.Varchar2, 40).Value = String.IsNullOrEmpty(Str_pva_solcom) ? "S" : Str_pva_solcom;

                //Output salidas
                MDOgeneral.spComando.Parameters.Add("pva_result", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                MDOgeneral.spComando.Parameters.Add("pva_errusu", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                MDOgeneral.spComando.ExecuteNonQuery();
            }
            catch (Exception ex) { throw ex; }
        }

        #region FJRF - CajaDeTextoMsgbox
        protected void Msgbox(String StrCaption, String StrMensaje, MessageBoxButton MsbTipoBoton, MessageBoxImage MsbTipoImagenIcono)
        {
            MessageBoxButton buttons;
            buttons = MsbTipoBoton;

            MessageBoxImage icon = MsbTipoImagenIcono;
            MessageBox.Show(StrMensaje, StrCaption, buttons, icon);
        }
        #endregion

        #region FJRF - ParaObtenerLasPropiedadesDeLaCeldaDelGrid
        //DataGridCell cell = DataGridHelper.GetCell(dgEst, dgEst.SelectedIndex, 0);//FJRF - Asi se llama
        static class DataGridHelper
        {
            static public DataGridCell GetCell(DataGrid dg, int row, int column)
            {
                DataGridRow rowContainer = GetRow(dg, row);

                if (rowContainer != null)
                {
                    DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(rowContainer);

                    // try to get the cell but it may possibly be virtualized
                    DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(column);
                    if (cell == null)
                    {
                        // now try to bring into view and retreive the cell
                        dg.ScrollIntoView(rowContainer, dg.Columns[column]);
                        cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(column);
                    }
                    return cell;
                }
                return null;
            }

            static public DataGridRow GetRow(DataGrid dg, int index)
            {
                DataGridRow row = (DataGridRow)dg.ItemContainerGenerator.ContainerFromIndex(index);
                if (row == null)
                {
                    // may be virtualized, bring into view and try again
                    dg.ScrollIntoView(dg.Items[index]);
                    row = (DataGridRow)dg.ItemContainerGenerator.ContainerFromIndex(index);
                }
                return row;
            }

            static T GetVisualChild<T>(Visual parent) where T : Visual
            {
                T child = default(T);
                int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
                for (int i = 0; i < numVisuals; i++)
                {
                    Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
                    child = v as T;
                    if (child == null)
                    {
                        child = GetVisualChild<T>(v);
                    }
                    if (child != null)
                    {
                        break;
                    }
                }
                return child;
            }
        }
        #endregion

        #region FJRF - ParaAlinearALaDerecha
        public static Style newCellStyleAlinearDerecha()
        {
            System.Windows.Style style = new Style(typeof(DataGridCell));
            style.Setters.Add(new System.Windows.Setter
            {
                Property = Control.HorizontalAlignmentProperty,
                Value = HorizontalAlignment.Right
            });
            return style;
        }
        #endregion

        #region FJRF - CargarCombosDejandoUnEspacioEnBlanco
        private Boolean CargarCombo(ComboBox CboComboACargar, string strConsultaOracle, string strSelectedValuePath, string strDisplayMemberPath, string strCodigoNombre)
        {
            Boolean BooSiHayDatos = false;//FJRF - Variable para informar si hay datos o no
            CboComboACargar.ItemsSource = null;
            CboComboACargar.Items.Clear();//FJRF - Borramos los posibles datos que pueda tener el combo

            DtConsulta = new DataTable();//FJRF - Inicializamos la variable
            DsConsulta = new DataSet();//FJRF - Inicializamos la variable

            DtConsulta = MdoGeneral.consulta(strConsultaOracle);//FJRF - Realizamos la consulta y retornamos los datos

            if (DtConsulta.Rows.Count > 0)//FJRF - Si hay datos llenar el combo
            {
                BooSiHayDatos = true;//FJRF - Informamos que hay datos

                DataRow drEncabezado;
                drEncabezado = DtConsulta.NewRow();

                if (strCodigoNombre == "Codigo")
                {
                    drEncabezado[strSelectedValuePath] = "ZZZ999";
                    drEncabezado[strDisplayMemberPath] = "TODOS";
                }
                if (strCodigoNombre == "Nombre")
                {
                    drEncabezado[strSelectedValuePath] = "ZZZ999";
                    drEncabezado[strDisplayMemberPath] = "TODOS";
                }

                DtConsulta.Rows.Add(drEncabezado);

                DsConsulta.Tables.Add(DtConsulta);//FJRF - Adicionameos el datatable al dataset
                CboComboACargar.ItemsSource = DsConsulta.Tables[0].DefaultView;//FJRF - Cargamos los datos encontrados
                CboComboACargar.SelectedValuePath = strSelectedValuePath.ToUpper();//FJRF - Cargamos la posicion
                CboComboACargar.DisplayMemberPath = strDisplayMemberPath.ToUpper();//FJRF - Decimos cual dato se mostrara

                CboComboACargar.SelectedValue = "ZZZ999";//FJRF - Ponemos el combo en la primera posicion
            }
            return BooSiHayDatos;//FJRF - Avisamos que si hay o no hay datos
        }
        #endregion

        #region FJRF - PonerFoto

        private void PonerImagen(string strCodigoReferencia, string strCodigoColor, string strNombreReferencia)
        {
            if (String.IsNullOrEmpty(strCodigoColor))
            {
                BitmapImage b = new BitmapImage();
                if (File.Exists(MDOgeneral.Fotos_BOSI + strCodigoReferencia + ".jpg"))
                {
                    b.BeginInit();
                    b.UriSource = new Uri(MDOgeneral.Fotos_BOSI + strCodigoReferencia + ".jpg");
                    b.EndInit();
                    imgFoto.Stretch = Stretch.Fill;
                    imgFoto.Source = b;
                    ImagenTooltip.Source = b;
                    txbNombreImagen.Text = strNombreReferencia;
                }
                else
                {
                    imgFoto.Source = null;
                }
            }
            else
            {
                BitmapImage b = new BitmapImage();
                if (File.Exists(MDOgeneral.Fotos_BOSI + strCodigoReferencia + strCodigoColor + ".jpg"))
                {
                    b.BeginInit();
                    b.UriSource = new Uri(MDOgeneral.Fotos_BOSI + strCodigoReferencia + strCodigoColor + ".jpg");
                    b.EndInit();
                    imgFoto.Stretch = Stretch.Fill;
                    imgFoto.Source = b;
                    ImagenTooltip.Source = b;
                    txbNombreImagen.Text = strNombreReferencia;
                }
                else
                {
                    if (File.Exists(MDOgeneral.Fotos_BOSI + strCodigoReferencia + StrCodigoPrimerColorReferencia + ".jpg"))
                    {
                        b.BeginInit();
                        b.UriSource = new Uri(MDOgeneral.Fotos_BOSI + strCodigoReferencia + StrCodigoPrimerColorReferencia + ".jpg");
                        b.EndInit();
                        imgFoto.Stretch = Stretch.Fill;
                        imgFoto.Source = b;
                        ImagenTooltip.Source = b;
                        txbNombreImagen.Text = strNombreReferencia;
                    }
                    else
                    {
                        Boolean BooExiste = false;
                        //Foto para cualquier color-Consultar colores para referencia
                        clases.CLSMAEPRO mae = new clases.CLSMAEPRO { CODREF_PRO = strCodigoReferencia };
                        DataTable val = mae.BuscarColor();

                        foreach (DataRow r in val.Rows)
                        {
                            if (!String.IsNullOrEmpty(r["Codigo"].ToString()))
                            {
                                string StrRuta = MDOgeneral.Fotos_BOSI + strCodigoReferencia + r["Codigo"].ToString() + ".jpg";
                                if (File.Exists(StrRuta))
                                {
                                    BitmapImage BitFoto = new BitmapImage();
                                    BitFoto.BeginInit();
                                    BitFoto.UriSource = new Uri(StrRuta);
                                    BitFoto.EndInit();
                                    imgFoto.Source = BitFoto;
                                    ImagenTooltip.Source = BitFoto;
                                    txbNombreImagen.Text = strNombreReferencia;

                                    BooExiste = true;

                                    break;//FJRF - Si la encontro nos salimos
                                }
                            }
                        }

                        if (BooExiste == false)
                        {
                            imgFoto.Source = null;
                        }
                    }
                }
            }
        }

        #endregion

        private void imgFoto_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            try
            {
                //Para llamar el PDF de la ficha tecnica de la referencia
                if (File.Exists(MDOgeneral.Fotos_BOSI + txtReferencia.Text.Trim() + ".PDF"))
                {
                    //MessageBox.Show("Si existe la ficha tecnica", "Confirmación", MessageBoxButton.OK, MessageBoxImage.Hand, MessageBoxResult.OK);
                    String fileName = MDOgeneral.Fotos_BOSI + txtReferencia.Text.Trim() + ".PDF";
                    System.Diagnostics.Process process = new System.Diagnostics.Process();
                    process.StartInfo.FileName = fileName;
                    process.Start();
                }
                else
                {
                    MessageBox.Show("No existe la ficha tecnica", "Confirmación", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        #endregion
    }
}
